Commerce for developers
The open-source engine behind storefront, checkout, orders, and inventory. Self-host it, or let us run it. Your code, your data, one API.
Powering 1,200 stores, from first drop to IPO
- Northwind
- Hollow & Co
- Fielday
- Marrow
- Copperline
- Aster Goods
A store is the most important software a business runs. It should not be rented. Mercury puts the whole engine in your hands, open source and built for the developers who ship the storefront, the finance teams who close the books, and the operators who watch the ledger.
Read the principlesEvery order, one ledger
Orders, refunds, exchanges, and payouts are entries in one append-only ledger, so the number on the dashboard is the number in the bank. Filter by anything, export nothing.
How the ledger worksOrders 1,482 this month
- All
- Unfulfilled
- Paid
- Refunded
| Order | Customer | Total | Status |
|---|---|---|---|
| #48213 | Lena Ortiz Berlin | $136.00 | Paid |
| #48212 | Noah Bergström Stockholm | $118.00 | Paid |
| #48211 | Priya Raman Austin | $64.50 | Fulfilled |
| #48210 | Tomás Ferreira Lisbon | $226.00 | Paid |
| #48209 | Mei Tanaka Osaka | $66.00 | Refunded |
| #48208 | Sam Okafor London | $112.00 | Fulfilled |
Stock that reconciles itself
Every channel, warehouse, and return updates the same count in real time. Set a threshold per SKU and Mercury reserves, restocks, and warns before a sale ever oversells.
Inventory rulesProducts
4 low on stock
-
Ridge Shell Jacket JKT-RIDGE-M
$240312 in stock
-
Trail Tee, Black TEE-BLACK-M
$381,204 in stock
-
Merino Base Layer BASE-MER-L
$9627 in stock
Low -
Down Vest, Sand VEST-DOWN-S
$18088 in stock
Checkout in one page and 41 seconds
Hosted at the edge, themed to your store, with Apple Pay, Google Pay, and saved cards. Address lookup, tax, and shipping resolve as the customer types. Median time from cart to paid is 41 seconds.
See a live checkoutNorthwind
Secure checkout
or pay with card
lena@example.com
Card
4242 4242 4242 4242
08 / 29
123
- Ridge Shell Jacket Medium · Slate $240.00
- Trail Tee, Black Medium · Qty 1 $38.00
- Subtotal
- $278.00
- Shipping
- Free
- Sales tax (8%)
- $22.24
- Total
- $300.24
Integrate tonight
One API, typed SDKs in five languages, and a hosted checkout you can create in a single call. Everything the admin does, your code can do.
import Mercury from '@mercury/sdk';
const mercury = new Mercury(process.env.MERCURY_KEY);
const checkout = await mercury.checkouts.create({
currency: 'EUR',
items: [{ sku: 'TEE-BLACK-M', quantity: 2 }],
shipping: 'express',
successUrl: 'https://store.example/thanks',
});
console.log(checkout.url); // hosted, one page, 41s median
import mercury
client = mercury.Client(api_key=os.environ["MERCURY_KEY"])
checkout = client.checkouts.create(
currency="EUR",
items=[{"sku": "TEE-BLACK-M", "quantity": 2}],
shipping="express",
success_url="https://store.example/thanks",
)
print(checkout.url) # hosted, one page, 41s median
use Mercury\Client;
$mercury = new Client(getenv('MERCURY_KEY'));
$checkout = $mercury->checkouts->create([
'currency' => 'EUR',
'items' => [['sku' => 'TEE-BLACK-M', 'quantity' => 2]],
'shipping' => 'express',
'successUrl' => 'https://store.example/thanks',
]);
echo $checkout->url; // hosted, one page, 41s median
package main
import "github.com/mercury-commerce/mercury-go"
func main() {
client := mercury.New(os.Getenv("MERCURY_KEY"))
checkout, err := client.Checkouts.Create(mercury.CheckoutParams{
Currency: "EUR",
Items: []mercury.Item{{SKU: "TEE-BLACK-M", Quantity: 2}},
Shipping: "express",
SuccessURL: "https://store.example/thanks",
})
fmt.Println(checkout.URL) // hosted, one page, 41s median
}
curl https://api.mercury.dev/v1/checkouts \
-u "$MERCURY_KEY:" \
-d currency=EUR \
-d "items[0][sku]=TEE-BLACK-M" \
-d "items[0][quantity]=2" \
-d shipping=express \
-d success_url=https://store.example/thanks
# { "id": "chk_9f2a", "url": "https://pay.mercury.dev/chk_9f2a" }
Everything a store needs, none of the apps
Features other platforms sell as add-ons are part of the engine. Each one is a first-class object in the API, so what the admin can do, your code can do.
- Headless storefront
- Ship the front end you want in Next, Nuxt, or plain HTML. Mercury serves the catalog, cart, and checkout over one typed API.
- Instant checkout
- A hosted, one-page checkout with Apple Pay, Google Pay, and saved cards. Median time to paid: 41 seconds.
- Inventory that reconciles itself
- Stock levels update from every channel, warehouse, and return in real time, with low-stock thresholds per SKU.
- Multi-currency and tax
- Sell in 135 currencies with automatic VAT, GST, and US sales tax at the line-item level. Filing exports included.
- PCI DSS Level 1
- Card data never touches your servers. Mercury tokenizes at the edge and holds SOC 2 Type II and ISO 27001.
- Revenue analytics
- Cohorts, repeat rate, and margin by product, without exporting a CSV. Every chart links back to the orders behind it.
- Subscriptions and bundles
- Recurring orders, dunning, pause and skip, and bundle pricing rules, all modeled as ordinary orders your code already handles.
- Customer accounts
- Passwordless sign-in, addresses, order history, and returns, themed to your storefront with a few lines of config.
- Open API and webhooks
- REST and GraphQL, first-party SDKs in five languages, and signed webhooks for every event. Apache 2.0, forever.
Hear it from the teams that run on it
Engineers, founders, and finance leads on what changed when the store became code they own.
We replatformed from a closed system to Mercury in nine weeks. Checkout conversion went up on day one and we finally own the code that runs our store.
Elena Marsh
Head of Engineering, Northwind
- +18%
- Checkout conversion in the first month
- 9 weeks
- From kickoff to full cutover
The API is the documentation. Every field means what it says, and the webhooks have never once fired out of order.
Jordan Keil
Staff Engineer, Fielday
Self-hosting was the whole point for us. Mercury runs on two small boxes and handled our Black Friday without a page.
Riley Chen
Founder, Hollow & Co
From an empty repo to a live store
Four steps, most of them in the admin rather than in code. Teams under fifty thousand SKUs usually finish in a fortnight.
-
01
Install
One command on your own server, or a Mercury Cloud project. Either way you get the same API and the same admin.
-
02
Import
Bring products, customers, and order history from Shopify, WooCommerce, or a CSV. Nothing is lost, including gift cards.
-
03
Connect
Point your storefront at the API, or start from a starter theme. Payments, shipping, and tax are configured, not coded.
-
04
Sell
Go live behind your own domain. Orders, stock, and payouts reconcile themselves while you watch the ledger.
Free to run yourself. Fair to let us.
The engine is open source and always will be. Cloud is the same code with backups, edge checkout, and someone else on call.
-
Self-hosted
$0 $0 forever
The full engine, on your own infrastructure.
- Every feature, Apache 2.0
- Unlimited products and orders
- All payment providers
- Community support
- Bring your own storage and CDN
-
Cloud
Most popular$49 $39 per month
We run it. You build the store.
- Everything in Self-hosted
- Managed database, backups, and CDN
- Global edge checkout
- Email support, one business day
- 99.95% uptime SLA
- Three team seats included
-
Enterprise
Custom Custom
Your VPC, your compliance team, our engineers.
- Everything in Cloud
- Single-tenant deployment
- SSO, SCIM, and audit logs
- Dedicated solutions engineer
- Custom SLA and data residency
- Migration done with you
Prices in USD. Cloud plans add a 0.5% fee per transaction; self-hosted has none.
Read how three teams run on Mercury
A replatform, a marketplace built in a summer, and a studio that sells out in minutes.
- Outdoor apparel Copenhagen +18% Checkout conversion Northwind Northwind moved 40,000 SKUs off a closed platform in nine weeks Read the story
- Marketplace Austin 60 Producers on one checkout Fielday Fielday built a two-sided farm marketplace on Mercury's API in a summer Read the story
- Ceramics Portland 0 Pages during Black Friday Hollow & Co Hollow & Co survived its biggest drop on two small servers Read the story
Questions, answered plainly
Everything people ask before they run a store on Mercury. Anything else, write to us and an engineer answers.
hello@mercury.devWhat does Mercury actually do?
Mercury is the back end of a store: the catalog, cart, checkout, orders, inventory, customers, and payouts, exposed through one API and an admin. You bring the storefront, or start from one of ours.
Is it really open source?
Yes. The whole engine is Apache 2.0 on GitHub, including checkout and the admin. Cloud is the same code, run and backed up by us.
How long does a migration take?
Most stores under fifty thousand SKUs cut over in two to six weeks. The importer keeps order history, customers, gift cards, and redirects so search rankings survive.
Which payment providers are supported?
Stripe, Adyen, Braintree, Mollie, PayPal, and any provider with a card-tokenization API through the adapter interface. Apple Pay and Google Pay work out of the box.
Can I run multiple stores from one install?
One Mercury install serves any number of stores, each with its own domain, currency, catalog, and team, sharing customers and stock if you want them to.
What happens to my data if I leave Cloud?
You export a complete database dump and media archive from the admin and run it on your own servers. Same code, no lock-in.
Own the store. Start tonight.
Clone the repo, or open a Cloud project and be selling before the coffee cools.